#import <Foundation/Foundation.h>
#import <MapKit/MapKit.h>
#import "PersistentDataType.h"
#import "SFUConstants.h"
#import "FileUtilities.h"

/**
 * A MapAppSettings is an object containing all the persistent
 * user-customizable settings for this application.
 *
 * @author      James Lin
 * @author      Justin Hollander
 * @version     2.2.5
 * @since       1.1.0
 */
@interface MapAppSettings : NSObject <PersistentDataType> {
	NSString*      path;                 // Absolute path to the settings archive file
	NSDate*        dirUpdateTimestamp;   // Timestamp of latest directory update
	NSTimeInterval eventCacheInterval;   // Interval for event caching
	MKMapType      currentMapType;       // Current map display type
	NSUInteger     foursquareVenueLimit; // Foursquare venue display limit
	NSUInteger     foursquareTipLimit;   // Foursquare tip display limit
	NSUInteger     campus;               // Default campus for map
}

@property (nonatomic, retain) NSString* path;
@property (nonatomic, retain) NSDate* dirUpdateTimestamp;
@property NSTimeInterval eventCacheInterval;
@property MKMapType currentMapType;
@property NSUInteger foursquareVenueLimit;
@property NSUInteger foursquareTipLimit;
@property NSUInteger campus; 

/**
 * Retrieve the shared instance of the application settings.
 *
 * @return  the shared instance of MapAppSettings
 */
+ (MapAppSettings*)sharedSettings;

/**
 * Reset the application settings to default.
 */
- (void)setDefault;

/**
 * Save the application settings data to archive.
 */
- (void)saveSettings;

/**
 * Load the application settings data from archive.
 */
- (void)loadSettings;

@end
